<!DOCTYPE html>
<html>
<head>
  <meta charset="utf-8">
  
  <title>【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵.md | 蓝湖畔淅淅沥沥的雨</title>
  <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1">
  <meta name="description" content="说明 - 2022-05-05 本篇博客为本人原创, 原发布于CSDN, 在搭建个人博客后使用爬虫批量爬取并挂到个人博客, 出于一些技术原因博客未能完全还原到初始版本(而且我懒得修改), 在观看体验上会有一些瑕疵 ,若有需求会发布重制版总结性新博客。发布时间统一定为1111年11月11日。钦此。  洛谷 P5020货币系统 https:&#x2F;&#x2F;www.luogu.com.cn&#x2F;problem&#x2F;P50">
<meta property="og:type" content="article">
<meta property="og:title" content="【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵.md">
<meta property="og:url" content="http://example.com/1111/11/11/%E3%80%90%E8%83%8C%E5%8C%85DP%E7%BB%83%E4%B9%A0%E3%80%91%E6%B4%9B%E8%B0%B7%20P5020%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F%20P1757%E9%80%9A%E5%A4%A9%E4%B9%8B%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%20P1064[NOIP2006%20%E6%8F%90%E9%AB%98%E7%BB%84]%E9%87%91%E6%98%8E%E7%9A%84%E9%A2%84%E7%AE%97%E6%96%B9%E6%A1%88%20P5322%20[BJOI2019]%E6%8E%92%E5%85%B5%E5%B8%83%E9%98%B5/index.html">
<meta property="og:site_name" content="蓝湖畔淅淅沥沥的雨">
<meta property="og:description" content="说明 - 2022-05-05 本篇博客为本人原创, 原发布于CSDN, 在搭建个人博客后使用爬虫批量爬取并挂到个人博客, 出于一些技术原因博客未能完全还原到初始版本(而且我懒得修改), 在观看体验上会有一些瑕疵 ,若有需求会发布重制版总结性新博客。发布时间统一定为1111年11月11日。钦此。  洛谷 P5020货币系统 https:&#x2F;&#x2F;www.luogu.com.cn&#x2F;problem&#x2F;P50">
<meta property="og:locale" content="zh_CN">
<meta property="article:published_time" content="1111-11-11T03:06:11.000Z">
<meta property="article:modified_time" content="2022-05-06T07:18:56.974Z">
<meta property="article:author" content="StarsWhisper">
<meta property="article:tag" content="OldBlog(Before20220505)">
<meta property="article:tag" content="DP">
<meta name="twitter:card" content="summary">
  
    <link rel="alternate" href="/atom.xml" title="蓝湖畔淅淅沥沥的雨" type="application/atom+xml">
  
  
    <link rel="icon" href="/favicon.png">
  
  
    <link href="//fonts.googleapis.com/css?family=Source+Code+Pro" rel="stylesheet" type="text/css">
  
  
<link rel="stylesheet" href="/css/style.css">

  
<link rel="stylesheet" href="/plugin/bganimation/bg.css">

  

  <link href="https://cdnjs.cloudflare.com/ajax/libs/KaTeX/0.10.0/katex.min.css" rel="stylesheet" type="text/css">
<meta name="generator" content="Hexo 6.1.0"></head>

<body>
  <div id="container">
    <div id="wrap">
      <div class="outer">
        <div class="widget-wrap mobile-header">
  <h3 class="widget-title"></h3>
  <div class="widget">
    <img class="avatar" src="/images/avatar.png">
    <h2 class="author">StarsWhisper</h2>
    <h3 class="description"></h3>
    <div class="count-box">
      <a href="/archives"><div><strong>75</strong><br>文章</div></a>
      <a href="/categories"><div><strong>31</strong><br>分类</div></a>
      <a href="/tags"><div><strong>56</strong><br>标签</div></a>
    </div>
    <ul class="blog-link">
     
          <a href="/" title="Home">
            <li>主页</li>
          </a>
        
          <a href="/archives" title="Archives">
            <li>归档</li>
          </a>
        
          <a href="/categories" title="Categories">
            <li>分类</li>
          </a>
        
          <a href="/tags" title="Tags">
            <li>标签</li>
          </a>
        
          <a href="/knightabout" title="Knightabout">
            <li>关于</li>
          </a>
        
          <a href="/bridges" title="Bridges">
            <li>传送门</li>
          </a>
        
          <a href="/announcement" title="Announcement">
            <li>公告</li>
          </a>
        
    </ul>
  </div>
</div>

        <section id="main"><article id="post-【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵" class="wow slideInRight article article-type-post" itemscope itemprop="blogPost">
  <div class="article-meta">
    <a href="/1111/11/11/%E3%80%90%E8%83%8C%E5%8C%85DP%E7%BB%83%E4%B9%A0%E3%80%91%E6%B4%9B%E8%B0%B7%20P5020%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F%20P1757%E9%80%9A%E5%A4%A9%E4%B9%8B%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%20P1064%5BNOIP2006%20%E6%8F%90%E9%AB%98%E7%BB%84%5D%E9%87%91%E6%98%8E%E7%9A%84%E9%A2%84%E7%AE%97%E6%96%B9%E6%A1%88%20P5322%20%5BBJOI2019%5D%E6%8E%92%E5%85%B5%E5%B8%83%E9%98%B5/" class="article-date">
  <time class="post-time" datetime="1111-11-11T03:06:11.000Z" itemprop="datePublished">
    <span class="post-month">11月</span><br/>
    <span class="post-day">11</span>
  </time>
</a>
   
  </div>
  <div class="article-inner">
    
    
      <header class="article-header">
        
  
    <h1 class="article-title" itemprop="name">
      【背包DP练习】洛谷 P5020货币系统 P1757通天之分组背包 P1064[NOIP2006 提高组]金明的预算方案 P5322 [BJOI2019]排兵布阵.md
    </h1>
  

        <div>
          
  <div class="article-category">
    <a class="article-category-link" href="/categories/%E7%AE%97%E6%B3%95/">算法</a>,<a class="article-category-link" href="/categories/%E7%AE%97%E6%B3%95/DP/">DP</a>
  </div>

          
              

          
        </div>
      </header>
    
    <div class="article-entry" itemprop="articleBody">
      
        <h2 id="说明-2022-05-05"><a class="markdownIt-Anchor" href="#说明-2022-05-05"></a> 说明 - 2022-05-05</h2>
<p>本篇博客为本人原创, 原发布于CSDN, 在搭建个人博客后使用爬虫批量爬取并挂到个人博客, 出于一些技术原因博客未能完全还原到初始版本(而且我懒得修改), 在观看体验上会有一些瑕疵 ,若有需求会发布重制版总结性新博客。发布时间统一定为1111年11月11日。钦此。</p>
<h2 id="洛谷-p5020货币系统"><a class="markdownIt-Anchor" href="#洛谷-p5020货币系统"></a> 洛谷 P5020货币系统</h2>
<p><a target="_blank" rel="noopener" href="https://www.luogu.com.cn/problem/P5020">https://www.luogu.com.cn/problem/P5020</a></p>
<p>思路是把货币从小到大排序，然后按顺序依次完全背包dp，每次dp检查i-1种面值的货币能不能凑出第i种货币<br />
<s>做完看了看，这个思路始终进行着令人尴尬的重复，但是懒得改了</s><br />
<s>然后去题解看了看发现没有比这还麻烦的方法</s><br />
.<br />
最后四个样例数据范围比较大，但应该都不是需要时间特别长的，而是卡一些技巧。<br />
80分代码：修改一（不是亿）点点就可以满分</p>
<p>​<br />
#include <cstdio><br />
#include <iostream><br />
#include <cstring><br />
#include <algorithm><br />
#include <cmath><br />
#include <cstdlib><br />
#include <queue><br />
#include <map><br />
#include <set><br />
#include <stack><br />
#include <vector><br />
typedef long long LL;<br />
typedef std::pair&lt;int ,int&gt; PP;<br />
const int N = 25005,M = 105;<br />
int dp[N],val[M],kik[M];<br />
int n,m,t,cnt;<br />
int main()<br />
{<br />
scanf(&quot;%d&quot;,&amp;t);<br />
while(t–){<br />
memset(dp,0,sizeof(dp));<br />
memset(kik,0,sizeof(kik));<br />
scanf(&quot;%d&quot;,&amp;n);<br />
for(int i=0; i&lt;n; i++){<br />
scanf(&quot;%d&quot;,&amp;val[i]);<br />
}<br />
std::sort(val,val+n);<br />
for(int i=1; i&lt;n; i++){<br />
for(int j=0; j&lt;i; j++){<br />
if(kik[j]) continue;<br />
for(int k=val[j]; k&lt;=val[i]; k++){<br />
dp[k] = std::max(dp[k],dp[k-val[j]]+val[j]);<br />
}<br />
}<br />
if(dp[val[i]] == val[i]) kik[i] = 1;<br />
}<br />
cnt = 0;<br />
for(int i=0; i&lt;n; i++){<br />
if(!kik[i]){<br />
cnt += 1;<br />
}<br />
}<br />
printf(&quot;%d\n&quot;,cnt);<br />
}<br />
return 0;<br />
}</p>
<p>TEL原因是 仅仅在for i 的一层循环中检查是否剔除面值i，做了很多无用功。<br />
修改：<br />
在for j的一层循环中，若出现面值i已经被凑出来，则不用把循环全部进行完，退出循环即可。这样可以节省一些时间<br />
做出该修改后得分95，还是未AC<br />
于是又在每次dp面值i之前先检查之前是否出现过可以被面值i整除的面值，有的话直接剔除，终于AC<br />
AC代码：</p>
<p>​<br />
#include <cstdio><br />
#include <iostream><br />
#include <cstring><br />
#include <algorithm><br />
#include <cmath><br />
#include <cstdlib><br />
#include <queue><br />
#include <map><br />
#include <set><br />
#include <stack><br />
#include <vector><br />
typedef long long LL;<br />
typedef std::pair&lt;int ,int&gt; PP;<br />
const int N = 25005,M = 105;<br />
int dp[N],val[M],kik[M];<br />
int n,m,t,cnt;<br />
int main()<br />
{<br />
scanf(&quot;%d&quot;,&amp;t);<br />
while(t–){<br />
memset(dp,0,sizeof(dp));<br />
memset(kik,0,sizeof(kik));<br />
scanf(&quot;%d&quot;,&amp;n);<br />
for(int i=0; i&lt;n; i++){<br />
scanf(&quot;%d&quot;,&amp;val[i]);<br />
}<br />
std::sort(val,val+n);<br />
for(int i=1; i&lt;n; i++){<br />
for(int j=0; j&lt;i; j++){<br />
if(val[i]%val[j] == 0){<br />
kik[i] = 1;<br />
break;<br />
}<br />
}<br />
if(kik[i]) continue;<br />
for(int j=0; j&lt;i; j++){<br />
if(kik[j]) continue;<br />
for(int k=val[j]; k&lt;=val[i]; k++){<br />
dp[k] = std::max(dp[k],dp[k-val[j]]+val[j]);<br />
}<br />
if(dp[val[i]] == val[i]) break;<br />
}<br />
if(dp[val[i]] == val[i]) kik[i] = 1;<br />
}<br />
cnt = 0;<br />
for(int i=0; i&lt;n; i++){<br />
if(!kik[i]){<br />
cnt += 1;<br />
}<br />
}<br />
printf(&quot;%d\n&quot;,cnt);<br />
}<br />
return 0;<br />
}</p>
<h2 id="洛谷-p1757-通天之分组背包"><a class="markdownIt-Anchor" href="#洛谷-p1757-通天之分组背包"></a> 洛谷 P1757 通天之分组背包</h2>
<p><a target="_blank" rel="noopener" href="https://www.luogu.com.cn/problem/P1757">https://www.luogu.com.cn/problem/P1757</a><br />
分组背包</p>
<p>​<br />
#include <cstdio><br />
#include <iostream><br />
#include <cstring><br />
#include <algorithm><br />
#include <cmath><br />
#include <cstdlib><br />
#include <queue><br />
#include <map><br />
#include <set><br />
#include <stack><br />
#include <vector><br />
typedef long long LL;<br />
typedef std::pair&lt;int ,int&gt; PP;<br />
const int N = 1005,M = 105;</p>
<pre><code>int m,n,w,v,g,gg;
struct Item
&#123;
   int value,weight;
&#125;gr[N][N];
int num[N],mp[N];
int dp[N];
int idx;

int main()
&#123;
   scanf(&quot;%d%d&quot;,&amp;m,&amp;n);
   for(int i=0; i&lt;n; i++)&#123;
      scanf(&quot;%d%d%d&quot;,&amp;w,&amp;v,&amp;g);
      if(!mp[g]) mp[g] = ++idx;
      gg = mp[g];
      gr[gg][num[gg]].weight = w;
      gr[gg][num[gg]].value  = v;
      num[gg] += 1;
   &#125;
   for(int i=1; i&lt;=idx; i++)&#123;
      for(int j=m; j&gt;=0; j--)&#123;
         for(int k=0; k&lt;num[i]; k++)&#123;
            if(j &gt;= gr[i][k].weight)&#123;
               dp[j] = std::max(dp[j],dp[j-gr[i][k].weight]+gr[i][k].value);
            &#125;
         &#125;
      &#125;
   &#125;
   printf(&quot;%d&quot;,dp[m]);
   return 0;
&#125;
</code></pre>
<h2 id="洛谷-p1064-noip2006-提高组-金明的预算方案"><a class="markdownIt-Anchor" href="#洛谷-p1064-noip2006-提高组-金明的预算方案"></a> 洛谷 P1064 [NOIP2006 提高组] 金明的预算方案</h2>
<p><a target="_blank" rel="noopener" href="https://www.luogu.com.cn/problem/P1064">https://www.luogu.com.cn/problem/P1064</a></p>
<p>​<br />
#include <cstdio><br />
#include <iostream><br />
#include <cstring><br />
#include <algorithm><br />
#include <cmath><br />
#include <cstdlib><br />
#include <queue><br />
#include <map><br />
#include <set><br />
#include <stack><br />
#include <vector><br />
typedef long long LL;<br />
typedef std::pair&lt;int ,int&gt; PP;<br />
const int N = 3.2e4+5,M = 105;<br />
int va[N],ww[N],ex[N][3],zhu[N],dp[N];<br />
int n,m,z,idx,tv,tz,tf,tf2;</p>
<pre><code>int main()
&#123;
   scanf(&quot;%d%d&quot;,&amp;m,&amp;n);
   for(int i=1; i&lt;=n; i++)&#123;
      scanf(&quot;%d%d%d&quot;,&amp;va[i],&amp;ww[i],&amp;z);
      if(z) &#123;
         ex[z][0] += 1;
         ex[z][ex[z][0]] = i;
      &#125;else&#123;
         zhu[++idx] = i;
      &#125;
   &#125;
   for(int i=1; i&lt;=idx; i++)&#123;
      tz = zhu[i];
      for(int j=m; j&gt;=0; j--)&#123;
         tv = va[tz];
         if(j &gt;= tv) dp[j] = std::max(dp[j],dp[j-tv]+ww[tz]*va[tz]);
         if(ex[tz][0])&#123;
            tf = ex[tz][1];
            tv = va[tz] + va[tf];
            if(j &gt;= tv) dp[j] = std::max(dp[j],dp[j-tv]+ww[tz]*va[tz]+ww[tf]*va[tf]);
         &#125;
         if(ex[tz][0] &gt;= 2)&#123;
            tf2 = ex[tz][2];
            tv = va[tz]+va[tf2];
            if(j &gt;= tv) dp[j] = std::max(dp[j],dp[j-tv]+ww[tz]*va[tz]+ww[tf2]*va[tf2]);
            tv += va[tf];
            if(j &gt;= tv) dp[j] = std::max(dp[j],dp[j-tv]+ww[tz]*va[tz]+ww[tf2]*va[tf2]+ww[tf]*va[tf]);
         &#125;
      &#125;
   &#125;
   printf(&quot;%d&quot;,dp[m]);
   return 0;
&#125;
</code></pre>
<h2 id="洛谷-p5322-bjoi2019排兵布阵"><a class="markdownIt-Anchor" href="#洛谷-p5322-bjoi2019排兵布阵"></a> 洛谷 P5322 [BJOI2019]排兵布阵</h2>
<p>分组背包<br />
用dp[i] 记录总共派出i个人的时候，最大的得分<br />
<strong>1.准备</strong></p>
<blockquote>
<p>想办法构造一个cas[][]数组 记录第i个城堡可以打败j个玩家时刚好需要多少兵力。<br />
这样我们可以认为， <strong>每个城堡为一组</strong> ，每一组中有s个数据分别为:在城堡i，分别打败1,2,3…s个玩家[花费的兵力，得到的分数]</p>
</blockquote>
<p><strong>2.开始套分组背包模板</strong></p>
<blockquote>
<p>-&gt;for [1,2,3,4…n] 枚举所有的n个城堡:<br />
…-&gt;for[m,m-1…3,2,1] 倒序枚举派遣总人数:<br />
…/…-&gt;for[1,2,3,4…s] 枚举每个城堡的s组数据:<br />
…/…/…-&gt;dp[w] = std::max(dp[w], dp[w-cost]+gain);</p>
</blockquote>
<pre><code>#include &lt;iostream&gt;
#include &lt;cstdio&gt;
#include &lt;cstdlib&gt;
#include &lt;cstring&gt;
#include &lt;cmath&gt;
#include &lt;algorithm&gt;
#include &lt;string&gt;
#include &lt;queue&gt;
#include &lt;vector&gt;
#include &lt;stack&gt;
#include &lt;map&gt;
#include &lt;set&gt;
typedef long long int LL;
const int INF = 0x7fffffff, SCF = 0x3fffffff;
const int N = 105, M = 2e4+4, MOD =  1000000007;
int ssa[N][N];//every enemy's solders send to castle i; 
int cas[N][N];//min solders number you send when you can beat j player at castle i;
int dp/*[N]*/[M];//max score you gain when castle = i and solders = j
int s,n,m,v;
int main()
&#123;
    scanf(&quot;%d%d%d&quot;,&amp;s,&amp;n,&amp;m);
    for(int i=1; i&lt;=s; i++)&#123;
        for(int j=1; j&lt;=n; j++)&#123;
            scanf(&quot;%d&quot;,&amp;ssa[j][i]);
        &#125;
    &#125;
    for(int i=1; i&lt;=n; i++)&#123;
        std::sort(ssa[i]+1,ssa[i]+s+1);
    &#125;
    for(int i=1; i&lt;=n; i++)&#123;
        for(int j=1; j&lt;=s; j++)&#123;
            int num = (ssa[i][j]&lt;&lt;1)+1;
            cas[i][j] = num;
            if(num &gt; m) break;
        &#125;
    &#125;
    //for(int i=0; i&lt;M; i++) dp[i] = -SCF;
    //dp[0] = 0;
    for(int i=1; i&lt;=n; i++)&#123;
        for(int w=m; w&gt;=0; w--)&#123;
            for(int j=0; j&lt;=s; j++)&#123;
                int gain = i*j, cost = cas[i][j];
                if(w-cost &lt; 0) break;
                dp[w] = std::max(dp[w], dp[w-cost]+gain);
            &#125;
        &#125;
    &#125;
    printf(&quot;%d&quot;,dp[m]);
    return 0;
&#125;
</code></pre>

      
    </div>
    <footer class="article-footer">
      <a data-url="http://example.com/1111/11/11/%E3%80%90%E8%83%8C%E5%8C%85DP%E7%BB%83%E4%B9%A0%E3%80%91%E6%B4%9B%E8%B0%B7%20P5020%E8%B4%A7%E5%B8%81%E7%B3%BB%E7%BB%9F%20P1757%E9%80%9A%E5%A4%A9%E4%B9%8B%E5%88%86%E7%BB%84%E8%83%8C%E5%8C%85%20P1064[NOIP2006%20%E6%8F%90%E9%AB%98%E7%BB%84]%E9%87%91%E6%98%8E%E7%9A%84%E9%A2%84%E7%AE%97%E6%96%B9%E6%A1%88%20P5322%20[BJOI2019]%E6%8E%92%E5%85%B5%E5%B8%83%E9%98%B5/" data-id="cl2uhoedc004oe4j32lki5x9c" class="article-share-link">分享</a>
      
      
  <ul class="article-tag-list" itemprop="keywords"><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/DP/" rel="tag">DP</a></li><li class="article-tag-list-item"><a class="article-tag-list-link" href="/tags/OldBlog-Before20220505/" rel="tag">OldBlog(Before20220505)</a></li></ul>

    </footer>
  </div>
  
    
<nav id="article-nav">
  
    <a href="/1111/11/11/%E3%80%90%E7%BA%BF%E6%AE%B5%E6%A0%91%E3%80%91%20%20L3-017%20%E6%A3%AE%E6%A3%AE%E5%BF%AB%E9%80%92%20(30%E5%88%86)%20%2027%E5%88%86WA%E4%BB%A3%E7%A0%81/" id="article-nav-newer" class="article-nav-link-wrap">
      <strong class="article-nav-caption">上一篇</strong>
      <div class="article-nav-title">
        
          【线段树】  L3-017 森森快递 (30分)  27分WA代码.md
        
      </div>
    </a>
  
  
    <a href="/1111/11/11/%E3%80%90%E8%AE%B0%E5%BD%95%E3%80%91py%E6%96%87%E4%BB%B6%E6%80%8E%E4%B9%88%E8%BD%AC%E6%88%90exe%E6%96%87%E4%BB%B6/" id="article-nav-older" class="article-nav-link-wrap">
      <strong class="article-nav-caption">下一篇</strong>
      <div class="article-nav-title">【记录】py文件怎么转成exe文件.md</div>
    </a>
  
</nav>

  
</article>



</section>
        
          <aside id="sidebar">
  
    <div class="widget-wrap">
  <h3 class="widget-title"></h3>
  <div class="widget">
    <h1 class="blog-title">蓝湖畔淅淅沥沥的雨</h1>
    <h2 class="blog-subtitle">All tragedy erased, I see only wonders...</h2>
    <ul class="blog-link">
     
          <a href="/" title="Home">
            <li>主页</li>
          </a>
        
          <a href="/archives" title="Archives">
            <li>归档</li>
          </a>
        
          <a href="/categories" title="Categories">
            <li>分类</li>
          </a>
        
          <a href="/tags" title="Tags">
            <li>标签</li>
          </a>
        
          <a href="/knightabout" title="Knightabout">
            <li>关于</li>
          </a>
        
          <a href="/bridges" title="Bridges">
            <li>传送门</li>
          </a>
        
          <a href="/announcement" title="Announcement">
            <li>公告</li>
          </a>
        
    </ul>
  </div>
</div>

  
    <div class="widget-wrap">
  <h3 class="widget-title"></h3>
  <div class="widget">
    <img class="avatar" src="/images/avatar.png">
    <h2 class="author">StarsWhisper</h2>
    <h3 class="description"></h3>
    <div class="count-box">
      <a href="/archives"><div><strong>75</strong><br>文章</div></a>
      <a href="/categories"><div><strong>31</strong><br>分类</div></a>
      <a href="/tags"><div><strong>56</strong><br>标签</div></a>
    </div>



    <div class="social-link">
      
        <a class="hvr-bounce-in" href="https://github.com/Wldcmzy" target="_blank" title="Github">
          Github
        </a>
      
        <a class="hvr-bounce-in" href="https://blog.csdn.net/wldcmzy" target="_blank" title="CSDN">
          CSDN
        </a>
      
        <a class="hvr-bounce-in" href="https://space.bilibili.com/83743701" target="_blank" title="bilibili(无技术和学习内容)">
          bilibili(无技术和学习内容)
        </a>
      
    </div>

    <div class="friend-link">
      <h2>友情链接</h2>
      
        <a class="hvr-bounce-in" href="https://shanamaid.github.io/" target="_blank" title="夏娜主题作者的博客">
          夏娜主题作者的博客
        </a>
      
    </div>
  </div>
</div>

  
</aside>
        
      </div>
      <footer id="footer">
  
  <div class="outer">
    <div id="footer-info" class="inner">
      &copy;2021 - 2022 StarsWhisper<br>
      由<a href="http://hexo.io/" target="_blank">Hexo</a>强力驱动 | 
      主题-<a target="_blank" rel="noopener" href="https://github.com/ShanaMaid/hexo-theme-shana">Shana</a>(但是魔改)
      
    </div>
    
  </div>
</footer>
    </div>
    

<script src="//apps.bdimg.com/libs/jquery/2.1.4/jquery.min.js"></script>
<script src="//apps.bdimg.com/libs/wow/0.1.6/wow.min.js"></script>
<script>
new WOW().init();
</script>   


  
<link rel="stylesheet" href="/plugin/fancybox/jquery.fancybox.css">

  
<script src="/plugin/fancybox/jquery.fancybox.pack.js"></script>




  
<link rel="stylesheet" href="/plugin/galmenu/GalMenu.css">

  
<script src="/plugin/galmenu/GalMenu.js"></script>

  <div class="GalMenu GalDropDown">
      <div class="circle" id="gal">
        <div class="ring">
          
            <a href="/announcement" title="" class="menuItem">公告</a>
          
            <a href="/tags" title="" class="menuItem">标签</a>
          
            <a href="/categories" title="" class="menuItem">分类</a>
          
            <a href="/archives" title="" class="menuItem">归档</a>
          
            <a href="/knightabout" title="" class="menuItem">关于</a>
          
            <a href="/bridges" title="" class="menuItem">传送门</a>
          
        </div>
        
          <audio id="audio" src="#"></audio>
        
      </div> 
</div>
<div id="overlay" style="opacity: 1; cursor: pointer;"></div>
  <script type="text/javascript">var items = document.querySelectorAll('.menuItem');
    for (var i = 0,
    l = items.length; i < l; i++) {
      items[i].style.left = (50 - 35 * Math.cos( - 0.5 * Math.PI - 2 * (1 / l) * i * Math.PI)).toFixed(4) + "%";
      items[i].style.top = (50 + 35 * Math.sin( - 0.5 * Math.PI - 2 * (1 / l) * i * Math.PI)).toFixed(4) + "%"
    }</script>
<script type="text/javascript">
  $(document).ready(function() {
    $('body').GalMenu({
      'menu': 'GalDropDown'
    })
  });
</script>

  <section class="hidden-xs"> 
  <ul class="cb-slideshow"> 
    <li><span>苟利</span></li> 
    <li><span>国家</span></li> 
    <li><span>生死以</span></li> 
    <li><span>岂能</span></li> 
    <li><span>祸福</span></li> 
    <li><span>趋避之</span></li> 
  </ul>
</section>

<script src="/js/script.js"></script>




  </div>
</body>
</html>